package jp.co.menox.controller.tmserver.gate;

import jp.co.menox.controller.tmserver.TmServerControllerBase;
import jp.co.menox.tmcommon.model.Category;
import jp.co.menox.tmserver.service.CategoryService;

import org.slim3.controller.Navigation;
import org.slim3.controller.validator.Validators;
import org.slim3.util.BeanUtil;

/**
 * サンプル実装：　カテゴリー登録／更新要求処理
 * @author
 *
 */
public class RequestRegisterSampleController extends TmServerControllerBase {

    CategoryService service;
    
    {
        service = new CategoryService();
    }
    
    @Override
    public Navigation run() throws Exception {
        if (!isPost() || !isValid()) {
            return forward("sampleRegister.jsp");
        }

        Category model = null;
        
        Long idParam = this.asLong("id");
        if (idParam == null) {
            // 新規登録

            model = new Category();
            // 入力値を設定
            BeanUtil.copy(request, model);
            // 新規登録
            model = service.insert(model);
        } else {
            // 更新
            
            // 現在内容を取得
            long id = idParam.longValue();
            model = service.select(id);
            // 入力値を設定
            BeanUtil.copy(request, model);
            // 更新
            model = service.update(model);
        }
        
        // 画面へ引き渡し
        requestScope("cate", model);
        
        // 登録完了：明細画面へ
        return forward("sampleDetail.jsp");
    }

    /**
     * 入力値のvalidation
     * @return
     */
    private boolean isValid() {
        Validators v = new Validators(request);

        // 入力各項目にチェック内容を記述
        // カテゴリー名称：　必須、64文字まで
        v.add("name", v.required(), v.maxlength(64));
        
        return v.validate();
    }

}
